package com.example.demo.service;

import java.io.IOException;
import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.normalClasses.eye.socket_res_obj;

public interface SpyderInterface {
void get_test(String url) throws IOException;

/**
 * 删除字符串中的html标签对，清洗数据。
 * @param htmlStr 传入的带标签文本
 * @return 返回清洗后的文本
 */
String delHtmlTags(String htmlStr);


/**
 * 半自动爬取csdn，存入数据库。
 * @param key 搜索的关键词
 * @param cookie 限于技术，采用半自动，将cookie作为参数进行爬取。
 * @param p 页码，"1"或"2"等等
 * @throws IOException
 */
void spy_CSDN(String key,String cookie,String p) throws IOException;


/**
 * 限于进度，简书的爬虫暂时搁置
 * @param key
 * @param cookie
 * @param p
 * @throws IOException
 */
void get_jianshu(String key,String cookie,String p) throws IOException;

/**
 * 检查csdn主数据库是否重复，按照子链接检索
 * @param child_link 检查此连接是否重复
 * @return true为未重复
 */
boolean check_over_csdn(String child_link);

/**
 * 爬取菜鸟教程的接口，直接爬。
 * @throws IOException
 */
void get_runoob() throws IOException;

/**
 * 检查这个keyword是否爬过，爬过的话就不在重复。
 * @param keyword
 * @return
 */
boolean check_over_runoob(String keyword);

/**
 *  检查CSDN后备数据库是否重复
 * @param child_link 当前的子链接
 * @param parent_keyword 当前的父节点keyword，因为只会在同一个父节点下查重
 * @return bool型，true是不重复。
 */

boolean check_over_csdn_back(String child_link,String parent_keyword);


/**
 * 菜鸟大型取值函数，取得菜鸟指定keyword的全部内容，由于JSON过大，逐渐被摒弃
 * @param keyword 必须是指定的keyword，否则返回错误
 * @return
 */
JSONObject search_runoob(String keyword);

/**
 * 获取菜鸟的评论
 * @param keyword 搜索关键词
 * @return 返回菜鸟评论的json对象
 */

JSONObject get_runoob_comments(String keyword);

/**
 * 按照关键词获取菜鸟教程的主内容或主要区域的代码。
 * @param keyword get的关键词。
 * 
 * @return
 */
JSONObject get_runoob_contents(String keyword);


/**
 * 给前端返回菜单目录
 * @param stamp 前端请求回来的标记
 * @return
 */
JSONObject get_menu(long stamp);

/**
 * 自用，查数据库返一个keyword目录。用于后端比对。
 * @return
 */
String[] get_keyword();

/**
 * 取出CSDN的文章，根据keyword和索引
 * @param index 索引，当前关键词的第i篇文章
 * @param keyword 关键词 
 * @param req_time_stamp 时间戳，用于标记校验
 * @return
 */
JSONObject get_from_CSDN(int index,String keyword,long req_time_stamp );

/**
 * 一次性的方法，按照菜鸟的标签爬取CSDN相关的文章。
 */
void spy_csdn_by_runoobs_menu(String cookie) throws IOException;


/**
 * 人工给CSDN的内容打分，默认的CSDN价值是5，打分后，更新存储结构的value
 * @param index 传入的文章索引
 * @param keyword_index 传入关键词索引，数字
 * @param opt 操作关键词，get,put，get是获取，put是更改
 */
String man_evaluate_csdn(int index,String keyword_index,String opt,String value);


/**
 * 定期删除价值过低的csdn文章，未完成。
 */
void periodical_delate_low_csdn();


/**
 * 用来爬取csdn主推数据库的内容，emmm，主推的词条目前是手动增加，之后可以增强为自动生成
 * @param key 搜索的关键词
 * @param p 页码
 * @throws IOException
 */
void spy_CSDN_back(String key,String parent_key,String p)  throws IOException;



/**
 * 从后备csdn数据库取数据的接口，根据一个父节点关键词，随机返回子文章。
 * @param parent_key 父节点
 * @return 返回将要send的jsonString 
 */
String get_back_csdn(String parent_key);

String get_back_csdn_cos(String parent_key);
}
